【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

您所在的位置:网站首页 linux 执行字符串命令 【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

2024-07-10 05:19| 来源: 网络整理| 查看: 265

🦄 个人主页——🎐个人主页 🎐✨🍁

🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油!🪁🍁🪁🍁🪁🍁🪁🍁

目录

一、关系运算符(数字比较符)

二、判断脚本执行时是否有传参,或者判断传参个数

2.1 判断脚本执行时是否有传参,或者判断传参个数

2.2 使用$1参数

三、判断文件或文件夹是否存在

3.1 判断文件是否存在

3.2 判断文件夹是否存在

四、判断字符串是否相等

4.1 使用双等号 == 进行比较

4.2 使用 = 进行比较

五、判断上个命令执行是否正常

5.1 判断上个命令执行是否正常

5.2 获取命令的输出

六、判断字符串是否为空

一、关系运算符(数字比较符)

在shell脚本中,我们经常在if语句中看到-ge、le等字样,下面我们看看这都是什么意思

-eq :equal(相等) -ne :not equal(不等) -gt :greater than(大于) -ge :greater than or equal(大于或等于) -lt :less than(小于) -le :less than or equal(小于或等于)

运算符

                                  说明

     举例

        含义

-eq

检测两个数是否相等,相等返回 true。

[ $a -eq $b ] 返回 false。

//equals 等于

-ne

检测两个数是否不相等,不相等返回 true。

[ $a -ne $b ] 返回 true。

//no equals 不等于

-gt

检测左边的数是否大于右边的,如果是,则返回 true。

[ $a -gt $b ] 返回 false。

//greater than 大于

-lt

检测左边的数是否小于右边的,如果是,则返回 true。

[ $a -lt $b ] 返回 true。

//less than 小于

-ge

检测左边的数是否大于等于右边的,如果是,则返回 true。

[ $a -ge $b ] 返回 false。

//greater equals 大于等于

-le

检测左边的数是否小于等于右边的,如果是,则返回 true。

[ $a -le $b ] 返回 true。

//less equals 小于等于

注意: 1、在shell中进行比较时,结果为0代表真,为1代表假。 2、-eq,-ne等比较符只能用于数字比较,有字符也会先转换成数字然后进行比较。

# 统计文件行数 rowNum=$(cat /var/log/cron | wc -l) if [ $rowNum -ge 1 ] && [ $rowNum -le 100 ]; then echo "1 - 100" else echo "大于100" fi

执行结果:

二、判断脚本执行时是否有传参,或者判断传参个数 2.1 判断脚本执行时是否有传参,或者判断传参个数

在 Shell 脚本中,要判断参数个数,可以使用特殊变量 $# 来获取传递给脚本或函数的参数个数。

if [ $# -eq 0 ]; then echo "没有参数." else echo "参数个数: $#" fi

在上述示例中,通过检查 $# 变量的值来判断是否有传递给脚本或函数的参数。

2.2 使用$1参数

在shell中$1变量表示脚本的第一个参数。所以如果判断$1参数是空值,即可表示脚本没有参数

if [ "$1" ];then echo "带参数"; else echo "没有带参数 " fi

执行结果:

三、判断文件或文件夹是否存在 3.1 判断文件是否存在 if [ -f "/var/log/messages" ]; then echo "文件存在." else echo "文件不存在" fi

上述示例中,将/var/log/messages 替换为要检查的实际文件路径。-f 参数用于检查路径是否为一个普通文件。

如下将判断改为"[[xxx]]"

if [[ -f "/path/to/file" ]]; then echo "File exists." else echo "File does not exist." fi

与方括号 [] 不同,[[ 提供了更多的功能和灵活性,并且在条件测试中更加常用。

test 命令也可以直接用于条件判断。

if test -e "/var/log/messages" then echo "文件存在." else echo "文件不存在" fi

执行结果:

注意:上述实例中的路径是测试路径,需要将其替换为要检查的实际文件路径。

3.2 判断文件夹是否存在

如果要判断是否存在的是一个目录而不是一个文件,可以将 -f 参数替换为 -d 参数。

if [ -d "/path/to/directory" ]; then echo "Directory exists." else echo "Directory does not exist." fi

在上述示例中,将 /path/to/directory 替换为您要检查的相对路径下的文件夹路径。-d 参数用于检查路径是否为一个目录。

使用 test

if test -d "/path/to/directory"; then echo "Directory exists." else echo "Directory does not exist." fi

 执行结果:

四、判断字符串是否相等 4.1 使用双等号 == 进行比较 str1="hello" str2="hello" if [ "$str1" == "$str2" ]; then echo "Strings are equal." else echo "Strings are not equal." fi

注意,在双等号 == 前后的字符串变量周围需要使用双引号引起来,以防止字符串中包含空格或特殊字符时出错。

4.2 使用 = 进行比较 str1="hello" str2="world" str3="world" str4="world" if [ "$str1" = "$str2" ] && [ "$str3" = "$str4" ]; then echo "Strings are equal." else echo "Strings are not equal." fi

执行结果:

五、判断上个命令执行是否正常 5.1 判断上个命令执行是否正常

在 Shell 脚本中,可以使用特殊变量 $? 来判断上一个命令是否执行正常。该变量保存了上一个命令的退出状态码。

通常情况下,命令执行成功时会返回退出状态码 0,而执行失败时会返回非零的退出状态码。

# 正确的 命令 java -version echo $? if [ $? -eq 0 ]; then echo "Command executed successfully." else echo "Command failed to execute." fi

在上述示例中,首先执行了 "java -verison" 命令。通过检查 $? 变量的值来判断是否成功执行。

注意:$? 变量的值仅表示上一个命令的退出状态码,而不是具体的错误信息。如下错误“java -version”

5.2 获取命令的输出

在 Shell 脚本中,可以获取命令的输出,使用反引号 (``) 或 $() 运算符:

file=/var/log/cron num=$(cat ${file} | wc -l) echo "$num" num=`cat ${file} | wc -l` echo "$num"

执行结果:

在上述示例中,获取文件文件行数并输出,使用了管道符号 “|”,我们可以拼接更多的命令。

六、判断字符串是否为空

在 Shell 脚本中,要判断字符串是否为空,可以使用以下方法:

使用 -z 参数

str="hello" if [ -z "$str" ]; then echo "String is empty." else echo "String is not empty." fi

在上述示例中,我们定义str为hello。然后,使用 -z 参数来检查字符串是否为空。如果字符串为空,则打印 "String is empty.";否则,打印 "String is not empty."。

使用 -n 参数

str="" if [ -n "$str" ]; then echo "String is not empty." else echo "String is empty." fi

与 -z 相反,使用 -n 参数可以检查字符串是否非空。如果字符串非空,则打印 "String is not empty.";否则,打印 "String is empty."。

使用字符串长度进行比较

str="" if [ ${#str} -eq 0 ]; then echo "String is empty." else echo "String is not empty." fi

${#str} 表示获取字符串 str 的长度。使用 -eq 运算符来比较字符串长度是否为零。如果字符串长度为零,则打印 "String is empty.";否则,打印 "String is not empty."。

注意:在以上示例中,str 变量是一个空字符串。可以将其替换为要检查的实际字符串变量。

总结:字符串或者文件夹为空判断方式都有好多种,我们只需要掌握一种且能解决问题即可,也不用全部掌握。

参考链接:

shell关系运算符-eq -ne -gt -lt -ge -le的用法详解及实例 - 极客库

shell--判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空_shell 判断参数-CSDN博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3